/*
 * Copyright [2022] [https://www.xiaonuo.vip]
 *
 * Snowy采用APACHE LICENSE 2.0开源协议，您在使用过程中，需要注意以下几点：
 *
 * 1.请不要删除和修改根目录下的LICENSE文件。
 * 2.请不要删除和修改Snowy源码头部的版权声明。
 * 3.本项目代码可免费商业使用，商业使用请保留源码和相关描述文件的项目出处，作者声明等。
 * 4.分发源码时候，请注明软件出处 https://www.xiaonuo.vip
 * 5.不可二次分发开源参与同类竞品，如有想法可联系团队xiaonuobase@qq.com商议合作。
 * 6.若您的项目无法满足以上几点，需要更多功能代码，获取Snowy商业授权许可，请在官网购买授权，地址为 https://www.xiaonuo.vip
 */
package vip.xiaonuo.invoice.modular.system.redrecord.entity;

import com.baomidou.mybatisplus.annotation.*;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 红冲记录表实体
 *
 * @author zoo
 * @date  2025/10/14 11:10
 **/
@Getter
@Setter
@TableName("BIZ_RED_RECORD")
public class RedRecord {

    /** 主键ID */
    @TableId
    @Schema(description = "主键ID")
    private String id;

    /** 红票信息确认单id */
    @Schema(description = "红票追踪Id")
    private String redInvoiceTraceId;

    /** 红票信息确认单id */
    @Schema(description = "红票信息确认单id")
    private String redInvoiceConfirmId;

    /** 红字发票信息确认单编号 */
    @Schema(description = "红字发票信息确认单编号")
    private String redInvoiceConfirmNo;

    /** 原发票跟踪ID */
    @Schema(description = "原发票跟踪ID")
    private String originalInvoiceTraceId;

    /** 原发票号码 */
    @Schema(description = "原发票号码")
    private String originalInvoiceNo;

    /** 原蓝票发票类型代码(81 数电专票 82 数电普票 85 数电纸专 86 数电纸普) */
    @Schema(description = "原蓝票发票类型代码(81 数电专票 82 数电普票 85 数电纸专 86 数电纸普)")
    private String originalInvoiceTypeCode;

    /** 购方税号 */
    @Schema(description = "商户号")
    private String sellerId;

    /** 购方税号 */
    @Schema(description = "购方税号")
    private String buyerTaxNumber;

    /** 购方名称 */
    @Schema(description = "购方名称")
    private String buyerName;

    /** 销方税号 */
    @Schema(description = "销方税号")
    private String sellerTaxNumber;

    /** 销方名称 */
    @Schema(description = "销方名称")
    private String sellerName;

    /** 冲红类型 */
    @Schema(description = "冲红类型 03全额红冲 04部分红冲")
    private String redType;

    /** 合计冲红金额 */
    @Schema(description = "合计冲红价税合计")
    private BigDecimal totalRedAmount;

    /** 合计冲红金额 */
    @Schema(description = "合计冲红金额")
    private BigDecimal redAmount;

    /** 合计冲红税额 */
    @Schema(description = "合计冲红税额")
    private BigDecimal redTax;

    /** 商品信息 */
    @Schema(description = "商品信息 序列化程json存储")
    private String mxItems;

    /** 回调url */
    @Schema(description = "回调url")
    private String callbackUrl;

    /** 回调结果 */
    @Schema(description = "回调结果")
    private String callbacked;

    /** 回调次数 */
    @Schema(description = "回调次数")
    private String callbackTimes;

    /** 红冲原因代码(01：开票有误 02：销货退回 03：服务中止 04：销售折让) */
    @Schema(description = "红冲原因代码(01：开票有误 02：销货退回 03：服务中止 04：销售折让)")
    private String redReasonCode;

    /** 申请来源：0-销方申请 1-购方申请 */
    @Schema(description = "申请来源：0-销方申请 1-购方申请")
    private String applicationSource;

    /** 平台代码 */
    @Schema(description = "平台代码")
    private String platformCode;

    /** 开票日期，yyyyMMddHHmmss */
    @Schema(description = "开票日期，yyyyMMddHHmmss")
    private String redInvoiceDate;

    /** 原开票日期 */
    @Schema(description = "原开票日期")
    private String originalInvoiceDate;

    /** PDF文件链接 */
    @Schema(description = "PDF文件链接")
    private String pdfUrl;

    /** OFD文件链接 */
    @Schema(description = "OFD文件链接")
    private String ofdUrl;

    /** XML文件链接 */
    @Schema(description = "XML文件链接")
    private String xmlUrl;

    /** 状态(0:处理中 1:开具成功 2:开具失败) */
    @Schema(description = "状态(0:处理中 1:开具成功 2:开具失败)")
    private String status;

    /** 错误信息 */
    @Schema(description = "错误信息")
    private String errorMessage;

    /** 删除标志 */
    @Schema(description = "删除标志")
    @TableLogic
    @TableField(fill = FieldFill.INSERT)
    private String deleteFlag;

    /** 创建时间 */
    @Schema(description = "创建时间")
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    /** 创建用户 */
    @Schema(description = "创建用户")
    @TableField(fill = FieldFill.INSERT)
    private String createUser;

    /** 修改时间 */
    @Schema(description = "修改时间")
    @TableField(fill = FieldFill.UPDATE)
    private Date updateTime;

    /** 修改用户 */
    @Schema(description = "修改用户")
    @TableField(fill = FieldFill.UPDATE)
    private String updateUser;
}
